SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TDMOVI_BANC_D01]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS                 --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---Mödulo               : Empresa                    --*/  
/*---Programa             : Anulaci÷n (1x1 Detallado)  --*/  
/*---                       Movimiento Bancos          --*/  
/*---Script               : tdbanc_p.sql               --*/  
/*---Nombre SP            : SP_TDMOVI_BANC_D01         --*/  
/*---Desarrollado por     : Javier Flores A.           --*/  
/*---Fecha Creaciön       : 10/06/1999                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versiön              : 7.0                        --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Modificado 1 por     : EVP                        --*/  
/*---Fecha Modificaciön   : 03/04/2001         --*/   
/*---Detalle Modificaciön : Permite Borrar, o borra correctamente --*/   
/*---                       detalle con DOc. Clientes  --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 2 por     : Reynaldo Menacho           --*/  
/*---Fecha Modificaciön   : 22/04/2005                 --*/   
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/  
/*---						de los documentos				         --*/ 
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TDMOVI_BANC_D01                      --*/  
/*---Grant all on SP_TDMOVI_BANC_D01 to public         --*/   
/*---SP_TDMOVI_BANC_D01                                --*/  
/*-------------------------------------------------------*/  
 @ISCO_EMPR   TD_VC_002,   
 @ISCO_USUA_MODI  TD_VC_008_USUA,  
 @ISCO_BANC   TD_VC_003,   
 @ISNU_CNTA_BANC  TD_VC_020,  
 @ISAA_BNCO   TD_VC_004,   
 @ISMM_BNCO   TD_VC_002,   
 @ISTI_MOVI_BANC  TD_VC_001,    
 @ISNU_COMP_BANC  TD_VC_008,   
 @INNU_SECU   TD_IN_001,  
 @ISCO_ENTI   TD_VC_020,  
 @ISTI_ENTI   TD_VC_001,  
 @ISTI_DOCU_ENTI  TD_VC_003,  
 @ISNU_DOCU_ENTI  TD_VC_020,  
 @INIM_CONV_DOCU  TD_NU_016_004,  
 @ISTI_DOCU   TD_VC_003,  
 @ISCO_MONE   TD_VC_003,  
 @INFA_TIPO_CAMB  TD_NU_015_006,  
 @INIM_MOVI_DOCU  TD_NU_016_004,  
 @INNU_SECU_PRPA TD_IN_001,
 @ISCO_UNID_CNTB TD_VC_003
	As
Declare       
    @VNIM_TOTA TD_NU_016_004,  
    @VSST_SIGN TD_VC_001, @VNIM_PRES_REAL TD_NU_016_004,  
    @OSTI_DOCU_RETE   TD_VC_003, @VNIM_TOTA_DIST TD_NU_016_004,  
    @VNIM_TOTA_CLIE TD_NU_016_004, @VNIM_TOTA_PROV TD_NU_016_004,  
    @VSCO_ESTA_LETR   TD_VC_003, @VNNU_SECU TD_IN_001, @VSST_CIER_DOCU TD_VC_001,  
    @VSCO_CNTA_EMPR TD_VC_010, @VSST_APRO_CXPA TD_VC_001,
	@VSCO_ESTA_ANTE TD_VC_003, @VNIM_CONV_DOCU TD_NU_016_004
  
 EXEC SP_TTDOCU_CNTB_Q01 21, @OSTI_DOCU_RETE OUTPUT  
  
 Begin Tran SP_TDMOVI_BANC_D01  
  
     Select @VSST_APRO_CXPA = ST_APRO_CXPA From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR  
       
     Select @VSCO_CNTA_EMPR = RTRIM(ISNULL(CO_CNTA_EMPR, '')), @VSST_CIER_DOCU = ST_CIER_DOCU
     From   TDMOVI_BANC   
     Where  CO_EMPR = @ISCO_EMPR
     And    CO_UNID_CONC = @ISCO_UNID_CNTB
     And    CO_BANC = @ISCO_BANC  
     And    NU_CNTA_BANC = @ISNU_CNTA_BANC  
     And    AA_BNCO = @ISAA_BNCO  
     And    MM_BNCO = @ISMM_BNCO  
     And    TI_MOVI_BANC = @ISTI_MOVI_BANC  
     And    NU_COMP_BANC = @ISNU_COMP_BANC  
     And    NU_SECU = @INNU_SECU  
  
     If @VSST_APRO_CXPA = 'S'  
       Update TDPROG_PAGO
       Set  TI_SITU = 'APR', 
			CO_USUA_MODI = @ISCO_USUA_MODI, 
			FE_USUA_MODI = Getdate()
       Where CO_EMPR = @ISCO_EMPR   
       And   CO_PROV = @ISCO_ENTI   
       And   CO_TIPO_DOCU = @ISTI_DOCU_ENTI   
       And   NU_DOCU_PROV = @ISNU_DOCU_ENTI  
       And   NU_SECU = @INNU_SECU_PRPA   
  
     If @@error <> 0  
        Begin  
          Rollback Tran SP_TDMOVI_BANC_D01  
          Return  
        End      
  
     Delete TDMOVI_BANC   
     Where  CO_EMPR = @ISCO_EMPR  
     And    CO_UNID_CONC = @ISCO_UNID_CNTB
     And    CO_BANC = @ISCO_BANC  
     And    NU_CNTA_BANC = @ISNU_CNTA_BANC  
     And    AA_BNCO = @ISAA_BNCO  
     And    MM_BNCO = @ISMM_BNCO  
     And    TI_MOVI_BANC = @ISTI_MOVI_BANC  
     And    NU_COMP_BANC = @ISNU_COMP_BANC  
     And    NU_SECU = @INNU_SECU   
  
     If @@error <> 0  
	  Begin  
		Rollback Tran SP_TDMOVI_BANC_D01  
		Return  
	  End      
  
If @VSCO_CNTA_EMPR = ''  
  Begin  
	Select @VNIM_CONV_DOCU = @INIM_CONV_DOCU * -1
	-- Se busca el estado anterior del documento
    Exec SP_TTESTA_ORIG_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ANTE output

	/* Para Comprobantes de Retenci«n */   
	If @ISTI_ENTI = 'P' And @ISTI_DOCU_ENTI = @OSTI_DOCU_RETE And   
		Exists ( Select NU_COMP_RETE From TCCOMP_RETE Where CO_EMPR = @ISCO_EMPR And NU_COMP_RETE = @ISNU_DOCU_ENTI ) 
 
	  Begin  
	
		Update TCCOMP_RETE  
		Set TI_SITU = 'ANU' ,   
		FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI  
		Where CO_EMPR = @ISCO_EMPR   
		And   NU_COMP_RETE = @ISNU_DOCU_ENTI  
		
		If @@error <> 0  
		Begin  
		  Rollback Tran SP_TDMOVI_BANC_D01  
		  Return  
		End    
		
		Update TMDOCU_PROV  
		Set CO_ESTA_DOCU = 'ANU',  
		FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI  
		WHERE CO_EMPR = @ISCO_EMPR   
		And   CO_PROV = @ISCO_ENTI   
		And   CO_TIPO_DOCU = @ISTI_DOCU_ENTI   
		And   NU_DOCU_PROV = @ISNU_DOCU_ENTI  
		
		If @@error <> 0  
		  Begin  
		    Rollback Tran SP_TDMOVI_BANC_D01  
		    Return  
		  End  
	  End
    Else  
	  Begin
		--Se actualiza el documento y se graba en tabla de kardex de estados de documentos
		Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, 
							@VNIM_CONV_DOCU, @VSCO_ESTA_ANTE, @ISCO_USUA_MODI, @VSST_CIER_DOCU
		
		If @@error <> 0  
		  Begin  
			Rollback tran SP_TDMOVI_BANC_D01
			Return  
		  End      
	  End
  End  
  
     /* Sumo todos los documentos de clientes */  
  
     Select @VNIM_TOTA_CLIE = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)  
     From   TDMOVI_BANC  
     Where  CO_EMPR = @ISCO_EMPR  
     And    CO_UNID_CONC = @ISCO_UNID_CNTB
     And    CO_BANC = @ISCO_BANC  
     And    NU_CNTA_BANC = @ISNU_CNTA_BANC  
     And    AA_BNCO = @ISAA_BNCO  
     And    MM_BNCO = @ISMM_BNCO  
     And    TI_MOVI_BANC = @ISTI_MOVI_BANC  
     And    NU_COMP_BANC = @ISNU_COMP_BANC  
     And    TI_ENTI = 'C'  
     And    RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''  
  
     /* Sumo todos los documentos de proveedores */  
  
     Select @VNIM_TOTA_PROV = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)  
     From   TDMOVI_BANC  
     Where  CO_EMPR = @ISCO_EMPR  
     And    CO_UNID_CONC = @ISCO_UNID_CNTB
     And    CO_BANC = @ISCO_BANC  
     And    NU_CNTA_BANC = @ISNU_CNTA_BANC  
     And    AA_BNCO = @ISAA_BNCO  
     And    MM_BNCO = @ISMM_BNCO  
     And    TI_MOVI_BANC = @ISTI_MOVI_BANC  
     And    NU_COMP_BANC = @ISNU_COMP_BANC  
     And    TI_ENTI = 'P'  
     And    RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''  
  
     /* Sumo todos los registros ingresados por el usuario */  
  
     Select @VNIM_TOTA_DIST = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)  
     From   TDMOVI_BANC  
     Where  CO_EMPR = @ISCO_EMPR  
     And    CO_UNID_CONC = @ISCO_UNID_CNTB
     And    CO_BANC = @ISCO_BANC  
     And    NU_CNTA_BANC = @ISNU_CNTA_BANC  
     And    AA_BNCO = @ISAA_BNCO  
     And    MM_BNCO = @ISMM_BNCO  
     And    TI_MOVI_BANC = @ISTI_MOVI_BANC  
     And    NU_COMP_BANC = @ISNU_COMP_BANC  
     And    RTRIM(ISNULL(CO_CNTA_EMPR, '')) != ''  
  
  
     Select  @VNIM_TOTA = ISNULL(@VNIM_TOTA_PROV,0) + ISNULL(@VNIM_TOTA_CLIE,0) + ISNULL(@VNIM_TOTA_DIST,0)  
  
  
     Update TCMOVI_BANC  
     Set IM_MOVI = Round(@VNIM_TOTA,2),  
         CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()           
     Where CO_EMPR = @ISCO_EMPR   
     And   CO_UNID_CONC = @ISCO_UNID_CNTB
     And   CO_BANC = @ISCO_BANC   
     And   NU_CNTA_BANC = @ISNU_CNTA_BANC   
     And   AA_BNCO = @ISAA_BNCO  
     And   MM_BNCO = @ISMM_BNCO   
     And   TI_MOVI_BANC = @ISTI_MOVI_BANC   
     And   NU_COMP_BANC = @ISNU_COMP_BANC   
  
     If @@error <> 0  
        Begin  
          Rollback Tran SP_TDMOVI_BANC_D01  
     Return  
        End    
  
commit Tran SP_TDMOVI_BANC_D01  
  
/*------------------------ Fin ------------------------------*/


GO
